home *** CD-ROM | disk | FTP | other *** search
/ Programmer Power Tools / Programmer Power Tools.iso / info / status21.arc / STATUS21.ASM next >
Assembly Source File  |  1987-04-20  |  26KB  |  566 lines

  1. ;              Status.asm version 2.01 of 20 Apr 1987
  2.  
  3. CODE SEGMENT                           ;*************************
  4. ASSUME CS:CODE,DS:CODE                 ;*                       *
  5. ORG 100H                               ;*  REMEMBER TO EXE2BIN  *
  6.                                        ;*                       *
  7.                                        ;*************************
  8. START:         JMP    BEGINNING
  9.  
  10. ;              DATA AREA
  11. ;              ---------
  12. COPYRIGHT      DB  'Copyright 1987 Ziff-Davis Publishing Co.',1AH
  13. PROGRAMMER     DB  'Michael J. Mefford'
  14. CORRECTED      DB  ', fixed by Tom C. Bering to v2.01 '
  15.      
  16. SWITCH1        DB  179,' O 1 2 3 4 5 6 7 8 ',179,'$'
  17. SWITCH2        DB  179,' N $'
  18. SWITCH3        DB  179,32,24,32,'$'
  19.  
  20. SWITCH_FLAG    DB  0
  21. DISPLAY_FLAG   DB  0
  22.  
  23. ;------------------------------------------------------------;
  24. ; Clear the screen by changing to 80X25 color.  Start with   ;
  25. ; graphic display of the switches. Print switch explanation. ;
  26. ;------------------------------------------------------------;
  27.  
  28. BEGINNING:     MOV    AH,8                   ;Get attribute at cursor.
  29.                XOR    BH,BH                  ;Page zero.
  30.                INT    10H
  31.                MOV    BH,AH
  32.                XOR    CX,CX
  33.                MOV    DX,184FH               ;Entire screen.
  34.                MOV    AX,600H                ;Scroll active page.
  35.                INT    10H
  36.  
  37.                MOV    BP,17H                 ;BP will be used for cursor
  38.                MOV    DX,OFFSET HEADING      ; position. Display heading
  39.                CALL   LOCATE_STRING          ; at row 0, col 23 (17H).
  40.  
  41.                MOV    BP,107H                ;Row 1, col 7.
  42.                MOV    DX,OFFSET SWITCHES     ;Print "SWITCH SETTINGS".
  43.                CALL   LOCATE_STRING
  44.  
  45.            MOV    BP,31BH             ;Print Explanation &
  46.            MOV    DX,OFFSET BIT_TEXT     ;warnings re vid modes
  47.            CALL   LOCATE_STRING            
  48.            MOV    BP,41BH
  49.            MOV    DX,OFFSET WARNING1
  50.            CALL   LOCATE_STRING
  51.            MOV    BP,51BH
  52.            MOV    DX,OFFSET WARNING2
  53.            CALL   LOCATE_STRING
  54.  
  55.                MOV    BP,204H                ;Row 2, col 4.
  56.                CALL   LOCATE
  57.                MOV    DL,218                 ;Display switch box starting
  58.                CALL   PRINT_CHAR             ; with upper left corner.
  59.                CALL   PRINT_LINE             ;Print the line.
  60.                MOV    DL,191                 ;Upper right corner.
  61.                CALL   PRINT_CHAR
  62.  
  63.                MOV    BP,304H                ;Row 3, col 4.
  64.                MOV    DX,OFFSET SWITCH1      ;More of switch display.
  65.                CALL   LOCATE_STRING
  66.  
  67.                MOV    BP,404H                ;Row 4, col 4.
  68.                MOV    DX,OFFSET SWITCH2      ;More of switch display.
  69.                CALL   LOCATE_STRING
  70.  
  71.                MOV    BX,20DBH               ;Space = 0  block = 1.
  72.                JMP    SHORT ON               ;Display on position first.
  73.  
  74. OFF:           MOV    DL,179                 ;Finish box on line 4.
  75.                CALL   PRINT_CHAR
  76.                MOV    BP,504H                ;Row 5, col 4.
  77.                MOV    DX,OFFSET SWITCH3      ;More of switch display.
  78.                CALL   LOCATE_STRING
  79.                MOV    BX,0DB20H              ;Switch graphic characters.
  80.  
  81. ON:            MOV    CX,8                   ;Display all 8 switch settings.
  82.                INT    11H                    ;Equipment determination.
  83.                MOV    DH,AL                  ;Save in DH.
  84.  
  85. ;  T.C.B. MADE CORRECTIONS TO CODE ** HERE; SWITCH INDICATIONS WERE BACKWARDS
  86. ;  when a switch is ON the bit in 40:10 is a 0. When OFF the bit is a 1.
  87.  
  88. NEXT_SWITCH:   MOV    DL,BL                  ;** Assume one of the char.
  89.                TEST   DH,1                   ;Is bit on ** (SWITCH OFF)?
  90.                JZ     GOT_IT                 ;If yes, display ** space char.
  91.                MOV    DL,BH                  ;** Else get other (graphic) char.
  92. GOT_IT:        CALL   PRINT_CHAR             ;Print the char.
  93.                MOV    DL,32                  ;Space between settings.
  94.                CALL   PRINT_CHAR
  95.                ROR    DH,1                   ;Rotate one to get next bit.
  96.                LOOP   NEXT_SWITCH            ;Get next bit.
  97.                INC    SWITCH_FLAG            ;Now check for off bit settings.
  98.                CMP    SWITCH_FLAG,2          ;Have we done it already?
  99.                JNZ    OFF                    ;If no, do it now.
  100.  
  101.                MOV    DL,179                 ;Finish line 5.
  102.                CALL   PRINT_CHAR
  103.                MOV    BP,604H                ;Row 6, col 4.
  104.                CALL   LOCATE
  105.                MOV    DL,192                 ;Bottom left of box.
  106.                CALL   PRINT_CHAR
  107.                CALL   PRINT_LINE             ;Display the line.
  108.                MOV    DL,217                 ;Finish with bottom right.
  109.                CALL   PRINT_CHAR
  110.  
  111.                MOV    DX,OFFSET TEXT
  112.                CALL   PRINT_STRING
  113.  
  114.  
  115. ;------------------------------------------------;
  116. ; Mark with asterisk the correct switch setting. ;
  117. ;------------------------------------------------;
  118.  
  119.                INT    11H                    ;Equipment determination.
  120.                MOV    BX,AX                  ;AX will be used so store in BX.
  121.                MOV    BP,802H                ;Assume row 8, col 2.
  122.                MOV    DL,'*'                 ;Mark with asterisk.
  123.                TEST   BX,1                   ;Is bit one off?
  124.                JZ     DISPLAY_BIT1           ;If yes, we assumed right.
  125.                ADD    BP,100H                ;Else, goto row 9.
  126. DISPLAY_BIT1:  CALL   LOCATE_CHAR
  127.  
  128.                MOV    BP,0B02H               ;Assume row 11, col 2.
  129.                TEST   BX,2                   ;Is bit two off?
  130.                JZ     DISPLAY_BIT2           ;If yes, we assumed right.
  131.                ADD    BP,100H                ;Else, goto row 12.
  132. DISPLAY_BIT2:  CALL   LOCATE_CHAR
  133.  
  134.                MOV    BP,1202H               ;Row 18, col 2.
  135.                CALL   BITS                   ;Mark the other bits.
  136.  
  137.                MOV    BP,0B27H               ;Row 11, col 39.
  138.                CALL   BITS
  139.  
  140. ;------------------------------------;
  141. ; Pause and check if EGA is present. ;
  142. ;------------------------------------;
  143.  
  144.                MOV    AX,0C000H              ;EGA BIOS segment.
  145.                MOV    DS,AX
  146.                MOV    SI,1EH                 ;IBM signature offset.
  147.                MOV    DI,OFFSET IBM
  148.                MOV    DX,OFFSET EGA          ;Assume EGA present.
  149.                MOV    CX,3
  150.                REPZ   CMPSB                  ;Compare three bytes.
  151.                PUSH   CS
  152.                POP    DS
  153.                JNZ    FINISH_BITS            ;If not present, skip.
  154.                ADD    BP,29                  ;Else, add 29 to column.
  155.                CALL   LOCATE_STRING          ;And display "EGA".
  156.  
  157. FINISH_BITS:   MOV    BP,1027H               ;Row 16, col 39.
  158.                CALL   BITS
  159.  
  160. ;---------------------------------------;
  161. ; Display the number of parallel ports. ;
  162. ;---------------------------------------;
  163.  
  164. PRINTERS:      MOV    BP,1401H               ;Row 20, col 1.
  165.                CALL   LOCATE
  166.                INT    11H                    ;Get equipment again.
  167.                MOV    DL,'0'                 ;Assume zero printers.
  168.                TEST   AH,10000000B           ;Is bit 15 on?
  169.                JZ     CH_PRN1                ;If no, check bit 14.
  170.                ADD    DL,2                   ;Else, add two to count.
  171. CH_PRN1:       TEST   AH,1000000B            ;Is bit 14 on?
  172.                JZ     PRINT_PRN              ;If no, ready to print.
  173.                INC    DL                     ;Else, add one to count.
  174. PRINT_PRN:     CALL   PRINT_CHAR             ;Print the count.
  175.                MOV    DX,OFFSET PARALLEL     ;Add the text.
  176.                CALL   PRINT_STRING
  177.  
  178. ;-------------------------------------;
  179. ; Display the number of serial ports. ;
  180. ;-------------------------------------;
  181.  
  182. SERIAL_PORT:   MOV    BP,1501H               ;Row 21, col 1.
  183.                CALL   LOCATE
  184.                INT    11H                    ;Retrieve equiment again.
  185.                MOV    DL,'0'                 ;Assume zero.
  186.                TEST   AH,100B                ;Is bit 10 on?
  187.                JZ     CK_COM1                ;If no, check bit 9.
  188.                ADD    DL,2                   ;Else, add two to count.
  189. CK_COM1:       TEST   AH,10B                 ;Is bit 9 on?
  190.                JZ     PRINT_COM              ;If no, ready to print.
  191.                INC    DL                     ;Else, add one to count.
  192. PRINT_COM:     CALL   PRINT_CHAR             ;Print the count.
  193.                MOV    DX,OFFSET SERIAL       ;Add the text.
  194.                CALL   PRINT_STRING
  195.  
  196. ;-----------------------------------;
  197. ; Display if game port is on board. ;
  198. ;-----------------------------------;
  199.  
  200. GAME:          MOV    BP,1601H               ;Row 22, col 1.
  201.                CALL   LOCATE
  202.                INT    11H                    ;Retrieve equipment.
  203.                MOV    DL,'0'                 ;Assume zero.
  204.                TEST   AH,10000B              ;Is bit 12 on?
  205.                JZ     PRN_GAME               ;If no, ready to print.
  206.                INC    DL                     ;Else, add one to count.
  207. PRN_GAME:      CALL   PRINT_CHAR             ;Print the count.
  208.                MOV    DX,OFFSET GAMEPORT     ;Add the text.
  209.                CALL   PRINT_STRING
  210.  
  211. ;------------------------------;
  212. ; Display total system memory. ;
  213. ;------------------------------;
  214.  
  215. TOTAL_MEMORY:  MOV    BP,1226H                  ;Row 18, col 38.
  216.                MOV    DX,OFFSET SYSTEM_MEMORY   ;Display text.
  217.                CALL   LOCATE_STRING
  218.                INT    12H                    ;Retrieve total memory.
  219.                CALL   NO_CARRY               ;Display via division routine.
  220.                MOV    DX,OFFSET K_TOTAL      ;Add more text "K total,".
  221.                CALL   PRINT_STRING
  222.  
  223. ;--------------------------------------;
  224. ; Display the bytes free for programs. ;
  225. ;--------------------------------------;
  226.  
  227. BYTES_FREE:    MOV    BP,1242H               ;Row 18, col 66.
  228.                CALL   LOCATE
  229.                CALL   MEMORY                 ;Get free memory.
  230.                MOV    DX,OFFSET K_FREE       ;Add "K free" text.
  231.                CALL   PRINT_STRING
  232.  
  233. ;--------------------------;
  234. ; Display extended memory. ;
  235. ;--------------------------;
  236.  
  237.                MOV    BP,1326H               ;Row 19, col 38.
  238.                MOV    DX,OFFSET EXTENDED
  239.                CALL   LOCATE_STRING
  240.                PUSH   DS                     ;Save data segment.
  241.                MOV    AX,0F000H
  242.                MOV    DS,AX
  243.                MOV    AL,DS:[0FFFEH]         ;Retrieve ID byte.
  244.                POP    DS
  245.                CMP    AL,0FCH                ;Is it AT class machine?
  246.                JNZ    NO_EXTEND              ;If no, no extended memory.
  247.                MOV    AH,88H                 ;Get no. of 1K blocks
  248.                INT    15H                    ; of extended memory.
  249.                STI
  250.                CMP    AX,0
  251.                JZ     NO_EXTEND
  252.                CALL   NO_CARRY               ;Else, display K bytes.
  253.                MOV    DL,'K'                 ;Add the "K".
  254.                CALL   PRINT_CHAR
  255.                JMP    SHORT DISP_EXPAND
  256.  
  257. NO_EXTEND:     MOV    DX,OFFSET NONE         ;If no extended memory,
  258.                CALL   PRINT_STRING           ; display "None".
  259.  
  260. ;--------------------------;
  261. ; Display expanded memory. ;
  262. ;--------------------------;
  263.  
  264. DISP_EXPAND:   MOV    BP,1426H               ;row 20, col 38.
  265.                MOV    DX,OFFSET EXPANDED
  266.                CALL   LOCATE_STRING
  267.                MOV    AX,3567H               ;Get INT 67H vector.
  268.                INT    21H
  269.                MOV    SI,OFFSET EMM          ;Point to "EMM".
  270.                MOV    DI,0AH                 ;Point to Device name.
  271.                MOV    CX,3                   ;Compare three characters.
  272.                REPZ   CMPSB
  273.                PUSH   CS                     ;Restore ES.
  274.                POP    ES
  275.                JNZ    NO_EXPAND              ;If name not there, no expanded.
  276.                MOV    AH,42H                 ;Else, get number of 16K blocks.
  277.                INT    67H
  278.                MOV    AX,16                  ;Multiply by 16 to get 1K blocks.
  279.                MUL    DX
  280.                CALL   NO_CARRY               ;Display via division routine.
  281.                MOV    DL,'K'                 ;Add the "K".
  282.                CALL   PRINT_CHAR
  283.                JMP    SHORT DOS_VERSION
  284.  
  285. NO_EXPAND:     MOV    DX,OFFSET NONE         ;If no expanded memory,
  286.                CALL   PRINT_STRING           ; display "None".
  287.  
  288. ;----------------------;
  289. ; Display DOS version. ;
  290. ;----------------------;
  291.  
  292. DOS_VERSION:   MOV    BP,1526H               ;Row 21, col 38.
  293.                MOV    DX,OFFSET DOS
  294.                CALL   LOCATE_STRING
  295.                MOV    AH,30H                 ;Get DOS version.
  296.                INT    21H
  297.                MOV    BL,AH                  ;Save minor version no. in BL.
  298.                XOR    BH,BH                  ;Zero in high half.
  299.                MOV    DL,AL                  ;Convert major version number
  300.                ADD    DL,30H                 ; to ASCII
  301.                CALL   PRINT_CHAR             ; and print.
  302.                MOV    DL,'.'                 ;Print the decimal.
  303.                CALL   PRINT_CHAR
  304.                CALL   TENS                   ;Display the minor number.
  305.  
  306. ;------------------------------------------------;
  307. ; Display BIOS version and search for copyright. ;
  308. ;------------------------------------------------;
  309.  
  310. BIOS_VERSION:  MOV    BP,1626H               ;Row 22, col 38.
  311.                MOV    DX,OFFSET BIOS
  312.                CALL   LOCATE_STRING
  313.                MOV    AX,0F000H              ;Point to ROM segment.
  314.                MOV    DS,AX
  315.                MOV    SI,0FFF5H              ;Point to Date
  316.                MOV    CX,8                   ;Eight characters max.
  317.                CALL   ASCII                  ; and display.
  318.  
  319.                MOV    BP,1726H               ;Row 23, col 38.
  320.                CALL   LOCATE
  321.  
  322.                MOV    DX,OFFSET COPYR        ;Point to "Copyright"
  323.                MOV    BP,9                   ;Nine characters.
  324.                CALL   SEARCH                 ;Search.
  325.                JNC    DISPLAY_MATCH          ;If no carry, got match.
  326.  
  327.                MOV    DX,OFFSET CAP_COPR     ;Point to "COPR."
  328.                MOV    BP,5
  329.                CALL   SEARCH                 ;And search.
  330.                JNC    DISPLAY_MATCH
  331.  
  332.                MOV    DX,OFFSET LOWER_COPR   ;Point to "Copr."
  333.                MOV    BP,5
  334.                CALL   SEARCH                 ;And search.
  335.                JNC    DISPLAY_MATCH
  336.  
  337.                MOV    DX,OFFSET CAP_C        ;Point to "(C)"
  338.                MOV    BP,3
  339.                CALL   SEARCH                 ;And search.
  340.                JNC    DISPLAY_MATCH
  341.  
  342.                MOV    DX,OFFSET LOWER_C      ;Point to "(c)"
  343.                MOV    BP,3
  344.                CALL   SEARCH                 ;And search.
  345.                JC     EXIT                   ;If didn't find it, give up.
  346.  
  347. DISPLAY_MATCH: PUSH   DS                     ;Save Copyright segment.
  348.                PUSH   CS
  349.                POP    DS
  350.                MOV    DX,OFFSET CAP_C        ;Print (C).
  351.                CALL   PRINT_STRING
  352.                POP    DS                     ;Restore Copyright segment.
  353.                MOV    CX,38                  ;Maximum of 38 characters
  354.                CALL   ASCII                  ; and display.
  355.  
  356. ;-------------------------------------------------------------------;
  357. ; Move the cursor to row 23 so our display won't scroll, then exit. ;
  358. ;-------------------------------------------------------------------;
  359.  
  360. EXIT:          MOV    BP,1700H               ;Row 23, col 0.
  361.                CALL   LOCATE
  362.                INT    20H                    ;Terminate.
  363.  
  364. ;      ******* SUBROUTINES *******
  365.  
  366. ;---------------------------------------------------------;
  367. ; This subroutine searches through ROM for the copyright. ;
  368. ;---------------------------------------------------------;
  369.  
  370. SEARCH:        MOV    BX,0                   ;Start at offset zero.
  371. NEXT_SEARCH:   MOV    CX,BP                  ;Number of characters to match.
  372.                MOV    SI,BX                  ;Retrieve starting offset.
  373.                MOV    DI,DX                  ;DX has offset of text to match.
  374.                REPZ   CMPSB
  375.                JZ     MATCH                  ;If zero, we got a match.
  376.                INC    BX                     ;Else, point to next offset.
  377.                JNZ    NEXT_SEARCH            ;If back to zero, we are done.
  378.                STC                           ;Indicate no match with carry.
  379.                RET
  380. MATCH:         CLC                           ;Indicate match with no carry.
  381.                RET
  382.  
  383. ;------------------------------------------------;
  384. ; This subroutine will display ASCII characters. ;
  385. ;------------------------------------------------;
  386.  
  387. ASCII:         LODSB                         ;Get a character.
  388.                CMP    AL,32                  ;Is it below space?
  389.                JB     END_ASCII              ;If yes, we are done.
  390.                CMP    AL,'z'                 ;Is it above "z"?
  391.                JA     END_ASCII              ;If yes, we are done.
  392.                MOV    DL,AL                  ;Else, print it.
  393.                CALL   PRINT_CHAR
  394.                LOOP   ASCII                  ;Get next character.
  395. END_ASCII:     RET
  396.  
  397. ;-----------------------------------------------;
  398. ; This subroutine will display the free memory. ;
  399. ;-----------------------------------------------;
  400.  
  401. MEMORY:        XOR    BX,BX                  ;Shrink allocated memory to
  402.                MOV    AH,4AH                 ; zero for current program
  403.                INT    21H                    ; via DOS.
  404.  
  405.                MOV    AH,48H                 ;Request FFFFh paragraphs of
  406.                MOV    BX,0FFFFH              ; memory. This will fail with
  407.                INT    21H                    ; available paragraphs in BX.
  408.  
  409.                MOV    AX,BX
  410.                XOR    DX,DX
  411.                MOV    CX,64                  ;Divide by 64 to get memory
  412.                DIV    CX                     ; in K bytes.
  413.                CMP    DX,32
  414.                JB     NO_CARRY
  415.                INC    AX                     ;Round up if half or above.
  416.  
  417. NO_CARRY:      MOV    BX,AX
  418.                MOV    DISPLAY_FLAG,0         ;Reset display flag.
  419.                MOV    CX,10000               ;Get ten thousands by dividing.
  420.                CALL   DIVIDE
  421.                MOV    CX,1000                ;Get thousands by dividing.
  422.                CALL   DIVIDE
  423.                MOV    CX,100                 ;Get hundreds by dividing.
  424.                CALL   DIVIDE
  425. TENS:          MOV    CX,10                  ;Get tens by dividing.
  426.                CALL   DIVIDE
  427.                MOV    CX,1                   ;Get ones by dividing.
  428.                CALL   DIVIDE
  429.                RET
  430.  
  431. DIVIDE:        MOV    AX,BX                  ;Number in AX
  432.                XOR    DX,DX                  ; and zero in DX
  433.                DIV    CX                     ; divide by CX
  434.                MOV    BX,DX                  ; remainder into BX
  435.                MOV    DL,AL                  ; and quotient into DL.
  436.                CMP    AL,0                   ;Is it zero?
  437.                JZ     FLAG                   ;If yes, is a non-zero displayed?
  438.                OR     DISPLAY_FLAG,AL        ;If non-zero, indicate by flag.
  439. FLAG:          CMP    DISPLAY_FLAG,0         ;Non-zero no. been displayed?
  440.                JA     DISPLAY                ;If yes, display else return
  441.                RET                           ; to suppress leading zeros.
  442.  
  443. DISPLAY:       ADD    DL,30H                 ;Convert hexidecimal
  444.                CALL   PRINT_CHAR             ; to decimal and display.
  445.                RET
  446.  
  447. ;--------------------------------------------;
  448. ; These are the two DOS display subroutines. ;
  449. ;--------------------------------------------;
  450.  
  451. PRINT_STRING:  MOV    AH,9                   ;Print string.
  452.                INT    21H
  453.                RET
  454.  
  455. PRINT_CHAR:    MOV    AH,2                   ;Display output.
  456.                INT    21H
  457.                RET
  458.  
  459. ;--------------------------------------------------------------------;
  460. ; These two subroutines locate the cursor before displaying via DOS. ;
  461. ;--------------------------------------------------------------------;
  462.  
  463. LOCATE_STRING: CALL   LOCATE
  464.                CALL   PRINT_STRING
  465.                RET
  466.  
  467. LOCATE_CHAR:   CALL   LOCATE
  468.                CALL   PRINT_CHAR
  469.                RET
  470.  
  471. ;-------------------------------------------;
  472. ; This subroutine sets the cursor position. ;
  473. ;-------------------------------------------;
  474.  
  475. LOCATE:        PUSH   DX                     ;Save the registers.
  476.                PUSH   BX
  477.                MOV    DX,BP                  ;Row/column.
  478.                XOR    BH,BH                  ;Page zero.
  479.                MOV    AH,2                   ;Set cursor postion
  480.                INT    10H                    ; via BIOS.
  481.                POP    BX
  482.                POP    DX                     ;Restore registers.
  483.                RET
  484.  
  485. ;-----------------------------------------------------------------------;
  486. ; This subroutine prints 19 line characters for the box top and bottom. ;
  487. ;-----------------------------------------------------------------------;
  488.  
  489. PRINT_LINE:    MOV    CX,19
  490.                MOV    DL,196
  491. NEXT_LINE:     CALL   PRINT_CHAR
  492.                LOOP   NEXT_LINE
  493.                RET
  494.  
  495. ;----------------------------------------------------------------------;
  496. ; This subroutine marks with an asterisk the appropriate bit settings. ;
  497. ;----------------------------------------------------------------------;
  498.  
  499. BITS:          MOV    CL,2                   ;Shift two bits to right.
  500.                ROR    BX,CL
  501.                MOV    DL,'*'
  502.                TEST   BX,3                   ;Are bits one and two off?
  503.                JZ     DISPLAY_BIT            ;If yes, display as is.
  504.                SUB    BP,100H                ;Else, move up one row.
  505.                TEST   BX,1                   ;Is bit one off?
  506.                JZ     DISPLAY_BIT            ;If yes, display.
  507.                SUB    BP,100H                ;Else, move up one row.
  508.                TEST   BX,2                   ;Is bit two off?
  509.                JZ     DISPLAY_BIT            ;If yes, display.
  510.                SUB    BP,100H                ;Else, move up one row.
  511. DISPLAY_BIT:   CALL   LOCATE_CHAR            ;Print the asterisk.
  512.                RET
  513.  
  514. ;------------------------------------------------------------------------;
  515. ; Text data is placed here so the Basic data listing is easier to enter. ;
  516. ;------------------------------------------------------------------------;
  517.  
  518. HEADING        DB  'PC Magazine System Checkout Util v2.01$'
  519. SWITCHES       DB  'SWITCH SETTINGS$'
  520.  
  521. ;fixed TEXT 4/20/87 128k and 192k settings were reversed; 2 & 3 drives revsd
  522.  
  523. TEXT:
  524. DB 13,10
  525. DB ' Bit 1  Sw 1                          Bit 5-6 Sw 5-6 initial video mode',13,10
  526. DB '    0 = (ON)  No disk drive(s)           11 = (OFF/OFF) 80X25 mono',13,10
  527. DB '    1 = (OFF) Drive(s) are present       10 = (OFF/ON)  40X25 color',13,10
  528. DB ' Bit 2  Sw 2                             01 = (ON/OFF)  80X25 color',13,10
  529. DB '    0 = (ON)  No math coprocessor        00 = (ON/ON)   None',13,10
  530. DB '    1 = (OFF) Coprocessor installed   Bit 7-8 Sw 7-8 # floppies (if Sw 1 OFF)'
  531. DB 13,10
  532. DB ' Bit 3-4 Sw 3-4 System Board Memory      11 = (OFF/OFF) 4',13,10
  533. DB '      (Ignore for AT)  PC1   PC2/XT      10 = (OFF/ON)  2',13,10
  534. DB '    11 = (OFF/OFF)     64K    256K       01 = (ON/OFF)  3',13,10
  535. DB '    10 = (OFF/ON)      32K    128K       00 = (ON/ON)   1',13,10
  536. DB '    01 = (ON/OFF)      48K    192K',13,10
  537. DB '    00 = (ON/ON)       16K     64K$'
  538.  
  539. PARALLEL       DB ' Parallel port(s)$'
  540. SERIAL         DB ' Serial port(s)$'
  541. GAMEPORT       DB ' Game port$'
  542. SYSTEM_MEMORY  DB 'Convent. memory $'
  543. K_TOTAL           DB 'K total,$'
  544. K_FREE           DB 'K free$'
  545. EXTENDED       DB 'Extended memory $'
  546. EXPANDED       DB 'Expanded memory $'
  547. DOS            DB 'DOS  version    $'
  548. BIOS           DB 'BIOS version    $'
  549. EMM            DB 'EMM'
  550. IBM            DB 'IBM'
  551. EGA            DB '(EGA)$'
  552. NONE           DB 'None$'
  553.  
  554. BIT_TEXT       DB 'NOTE: If a Switch is ON, its Bit in 40:10 is a 0.$'
  555. WARNING1       DB '      Using MODE (eg MODE MONO) or other software$'
  556. WARNING2       DB '      modifies 40:10; will change display of Sw 5-6.$'
  557.  
  558. CAP_COPR       DB 'COPR.'
  559. LOWER_COPR     DB 'Copr.'
  560. CAP_C          DB '(C)$'
  561. LOWER_C        DB '(c)'
  562. COPYR          DB 'Copyright'
  563.  
  564. CODE ENDS
  565. END  START
  566.